local CommonOHOH = _G.CommonOHOH;
local M = CommonOHOH.class.new(script, CommonOHOH.files.TaskBase());
M.IsClient = game:GetService("RunService"):IsClient();

--任务内容: 绝对时间任务，比如：等待24小时后领取奖励（24小时内可以任意下线）


function M.new(...)
	return M(...);
end;

function M.ctor(self,player,finish,tId)--构造函数
	M.super.ctor(self,player,finish,tId);
end;

--获取任务（公开）
function M.GetTaskId(self)
    return self.TaskId
end
-- 获取任务进度数据（公开）
function M.GetProgress(self)
    return self.arriveTime-os.time(),self.Finish
end;

--是否完成（公开）
function M.IsComplete(self)
    if os.time()>=self.arriveTime then
        return true
    end
    return false
end

function M.ClientInit(self)--客户端初始化
    self.DataBase=self.Player:GetComponent(_G.ClientOHOH.load.Client_PlayerDataComponent());
    self.arriveTime=self.DataBase:GetData("task")[self.TaskId]
    if not self.arriveTime then
        self.arriveTime=self.Finish+os.time()
    end
    self:UpdateProgress()
end

function M.ServerInit(self)--服务器初始化
    self.DataBase=self.Player:GetComponent(_G.ServerOHOH.load.Server_PlayerDataComponent())
    self.arriveTime=self.DataBase:GetData("task").__real[self.TaskId]
    if not self.arriveTime then
        self.arriveTime=self.Finish+os.time()
        self:SaveTaskData()
    end
    self:UpdateProgress()
end


-- 更新任务进度
function M.UpdateProgress(self)
    self:RemoveConnect()
    local con=self:AddProcess(function()
        self.UpdateEvent:Action(self)
        if self:IsComplete() then
            self:TaskDone()
        else
            local dt=self.arriveTime-os.time
            self:Wait(dt)
            self:UpdateProgress()
        end
    end)
    self:AddConnect(con)
end

function M.SaveTaskData(self)--保存任务数据
    self.DataBase:GetData("task")[self.TaskId]= self.arriveTime
    if not M.IsClient then
        self.DataBase:Execut(function()
        end);
    end
end

function M.dtor(self)--析构函数
    M.super.dtor(self);
end;

return M